#pragma once
#include "RBTree.h"
#include "Student.h"
#include "StudentInfo.h"
// 升序为0，降序为1
typedef enum { ASC = 0, DES = 1 } showRule;
class ManagementSystem
{
private:
    typedef int Status; // 状态码
    static ManagementSystem* pms;

public:
    RBTree *rbStuId, *rbScore, *rbCredit, *rbUsername;

    // 获取单实例
    static ManagementSystem* GetInstance();

    // 释放单实例，进程退出时调用
    static void deleteInstance();

    // 构造函数
    ManagementSystem();
    // 析构函数
    ~ManagementSystem();

    // 删除所有树中的相应节点，并释放学生信息资源
    bool remove(StudentInfo* si);

    // 从磁盘加载文件
    Status LoadFromFile();
    // 内存数据保存至磁盘
    Status SaveToFile();

    // 添加学生信息
    bool addInfo(StudentInfo* newInfo);

    // 对学生提供接口
    bool authStudent(Student* s1);

};

